home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / sidebarPanel.js < prev    next >
Text File  |  2009-12-16  |  7KB  |  162 lines

  1. /*****************************************************
  2.  *       This is loaded in the sidebar xul document 
  3.  *****************************************************/
  4.  
  5. Components.utils.import("resource://yoono/yoonoService.js");
  6. Components.utils.import("resource://yoono/yoonoYEXTIF.js");
  7. Components.utils.import("resource://yoono/yoonoSidebarService.js");
  8. Components.utils.import("resource://yoono/yoonoPrefs.js");
  9. Components.utils.import("resource://yoono/yoonoLog.js");
  10.  
  11. var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  12.                    .getInterface(Components.interfaces.nsIWebNavigation)
  13.                    .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
  14.                    .rootTreeItem
  15.                    .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  16.                    .getInterface(Components.interfaces.nsIDOMWindow) 
  17.  
  18. var yoonoGlob = mainWindow.yoonoGlob;
  19. var YoonoSidebar = mainWindow.YoonoSidebar;
  20. var sidebar = yoonoGlob.sidebar;
  21.  
  22.  
  23.  
  24. // this is called only from code in the sidebar xul document
  25. // It is called each time the sidebar is opened
  26. // The YoonoSidebar Class is defined in \chrome\content\yoono\sidebar.js and enriched here
  27. // WARNING : The document actually loaded can be the wizard.html or the sidebar.html file
  28. YoonoSidebar.prototype.init = function() {
  29.   //dump(new Date().getTime()+" :: chrome.YoonoSidebar.init\n");
  30.   
  31.   YOONO_LOG.debug("YoonoSidebar.init: Entering");
  32.   try {
  33.     this.visible = true;
  34.     this.domElt = document.getElementById('sidebar');
  35.     this.iframe =  document.getElementById('yoonosb-iframe');
  36.     this.externalInterfaces.setSbIframe(this.iframe);
  37.     this.win = this.iframe.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow);
  38.     this.doc = this.iframe.docShell.document;
  39.     this.sidebarMethods = this.win.YINTIF;
  40.     for(var method in this.methods) {
  41.       this.win.YEXTIF.methods[method] = this.methods[method];
  42.     }
  43.  
  44.     // In case we are opening the wizard, the page to open can be a parameter in query
  45.     var query = document.location.search.substr(1).split('=');
  46.     var stage = '';
  47.     if(query && query[1]) {
  48.       stage = query[1];
  49.     }
  50.     
  51.     // This will load global services and then call yoonoSidebarInit function with stage as argument
  52.     YOONO_CMPT.getYServices().core.initSubDocument(this.win,"yoonoSidebarInit",[YOONO_YEXTIF.getWindowId(mainWindow), stage]);
  53.     var _self=this;
  54.     window.setTimeout(function () {
  55.       //dump("Display sidebar!!!\n");
  56.       _self.browser.parentNode.removeAttribute("style"); // Remove the max-width set in content/sidebar.js
  57.       var memorizedWidth = _self.browser.parentNode.getAttribute('width'); // this.browser is initialized in sidebar.js
  58.       // TODO : sidebar default size was originaly initialized by the sidebar.js in sidebar.html (not in extension side)
  59.       // TODO : but now with TOS in sidebar, we first need to validate TOS before loading sidebar.html, causing on new firefox profile a 0 width sidebar
  60.       // TODO : (this does not affect upgradded or reinstalled yoono because the size is saved as persistant xul attribute)
  61.       // TODO : this is a workaround to prevent buggy and undef values : 
  62.       if(!memorizedWidth || memorizedWidth<0){
  63.         memorizedWidth = 267;
  64.         //dump("warning : memorizedWidth not set. Set to default "+memorizedWidth);
  65.       };
  66.       sidebar.setLarge(memorizedWidth);
  67.     },0);
  68.     
  69.   } catch(e) {
  70.     YOONO_LOG.exception(e);
  71.   }
  72. }
  73.  
  74.  
  75. // Called when unload event fires
  76. YoonoSidebar.prototype.uninit = function() {
  77.   try {
  78.     // Is is called twice because unload events trigger in both xul and html documents
  79.     if(!this.win) return;
  80.     YOONO_LOG.debug("YoonoSidebar.uninit: Quiting");
  81.     this.domElt = null;
  82.     this.iframe =  null;
  83.     this.doc = null;
  84.     this.sidebarMethods = null;
  85.     this.visible = false;
  86.     // Call goodbye method of HTML code
  87.     this.win.yoonoSidebarQuit();
  88.     this.win = null;
  89.   } catch(e) {
  90.     YOONO_LOG.exception(e);
  91.   }
  92. }
  93.  
  94. // called on the onload of the sidebar.xul document, that fires after the html document
  95. // was loaded in the sidebar iframe
  96. function init() {
  97.   try {
  98.     // calling the init method of the sidebar object
  99.     sidebar.init();
  100.     // when mouse is exiting from the sidebar, it might have to be reduced back to thin mode
  101.     // A listener will be in charge of that.
  102.     if(sidebar.win && ('ynSidebar' in sidebar.win)) {
  103.       window.addEventListener('mouseout', function(evt){
  104.                                         if(('iframe' ==  evt.target.nodeName) && ('yoonosb-iframe' == evt.target.id) && (sidebar.win.ynSidebar)) {
  105.                                           sidebar.win.ynSidebar.mouseOut();
  106.                                         }
  107.                                       }, true);
  108.     }
  109.   } catch(e) {
  110.     YOONO_LOG.exception(e);
  111.   }
  112. }
  113.  
  114. function uninit() {
  115.   sidebar.uninit();
  116. }
  117.  
  118.  
  119. // DIFFERENT TESTS, unused so far
  120. function dropOnMemoTarget(evt) {
  121.   // recup├⌐rer la session de Dnd
  122.   var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
  123.   var dragSession = dragService.getCurrentSession();
  124.   // Pr├⌐parer un objet pour r├⌐cup├⌐rer les donn├⌐es dragu├⌐es
  125.   var transferObject = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
  126.   transferObject = transferObject.QueryInterface(Components.interfaces.nsITransferable);
  127.   // Pr├⌐ciser le format qu'on souhaite lire
  128.   var type = "text/html";
  129.   if(dragSession.isDataFlavorSupported('video')) {
  130.     type = "video";
  131.   }
  132.   transferObject.addDataFlavor(type);
  133.   dragSession.getData(transferObject, 0);
  134.  
  135.   var dataObj = new Object();
  136.   var dropSizeObj = new Object();
  137.   transferObject.getTransferData(type, dataObj, dropSizeObj);
  138.   dataObj = dataObj.value.QueryInterface(Components.interfaces.nsISupportsString);
  139.   //alert('Drop de type ' + type + ' sur ' + evt.target.innerHTML + " : \n" + dataObj);
  140.   yoonoGlob.createMemo();
  141. }
  142.  
  143. // UNUSED
  144. function dragging(evt) {
  145.   var dragService = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
  146.   // Pr├⌐parer un objet pour r├⌐cup├⌐rer les donn├⌐es dragu├⌐es
  147.   var transferObject = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
  148.   transferObject = transferObject.QueryInterface(Components.interfaces.nsITransferable);
  149.   // Pr├⌐ciser le format qu'on souhaite envoyer
  150.   transferObject.addDataFlavor("video");
  151.   //transferObject.addDataFlavor("text/html");
  152.   var bmstring = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  153.   var texte = evt.target.embedText;
  154.   bmstring.data = texte;
  155.   transferObject.setTransferData('video', bmstring, texte.length*2);
  156.   //transferObject.setTransferData('text/html', bmstring, texte.length*2);
  157.   var transArray = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
  158.   transArray.AppendElement(transferObject.QueryInterface(Components.interfaces.nsISupports));
  159.   dragService.invokeDragSession(evt.target, transArray, null, dragService.DRAGDROP_ACTION_MOVE);
  160. }
  161.  
  162.